package com.ark.common.response;

import com.ark.common.constant.Constants;
import com.ark.common.constant.HttpStatus;
import lombok.NoArgsConstructor;

import java.util.HashMap;
import java.util.Objects;

@NoArgsConstructor
public class Result extends HashMap<String, Object> {


    public Result(Integer code,String message) {
        super.put(Constants.CODE_TAG, code);
        super.put(Constants.MSG_TAG, message);
    }


    public Result(Integer code,String message,Object data) {
        super.put(Constants.CODE_TAG, code);
        super.put(Constants.MSG_TAG, message);
        if (!Objects.isNull(data)){
            super.put(Constants.DATA_TAG, data);
        }
    }

    /**
     * 成功消息
     */
    public static Result success() {
        return success(null);
    }

    /**
     * 成功消息
     * @param data 数据对象
     */
    public static Result success(Object data) {
        return success("操作成功",data);
    }

    /**
     *
     * @param message 消息内容
     * @param data 数据对象
     * @return 成功消息
     */
    public static Result success(String message,Object data){
        return new Result(HttpStatus.SUCCESS,message,data);
    }

    /**
     * 消息内容
     * @return 警告消息
     */
    public static Result warn(String message){
        return warn(message, null);
    }

    /**
     *
     * @param message 消息内容
     * @param data 数据对象
     * @return 警告消息
     */
    public static Result warn(String message,Object data){
        return new Result(HttpStatus.WARN,message,data);
    }

    /**
     *
     * @return 错误消息
     */
    public static Result error(){
        return error(null);
    }

    /**
     * 消息内容
     * @return 错误消息
     */
    public static Result error(String message){
        return error(message,null);
    }

    /**
     *
     * @param  code 错误码
     * @param message 消息
     * @return 响应数据
     */
    public static Result error(Integer code,String message){
        return new Result(code,message,null);
    }

    /**
     *
     * @param message 消息内容
     * @param data 数据对象
     * @return 错误消息
     */
    public static Result error(String message,Object data){
        return new Result(HttpStatus.ERROR,message,data);
    }
}
